/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.eps.tesoreria.Entity;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

import com.eps.entity.CuentaContable;

/**
 *
 * @author Luis_Angel
 */
@Entity
@Table(name = "detalle_comprobante_caja_asiento")
@NamedQueries({
    @NamedQuery(name = "DetalleComprobanteCajaAsiento.findAll", query = "SELECT d FROM DetalleComprobanteCajaAsiento d"),
    @NamedQuery(name = "DetalleComprobanteCajaAsiento.findByIdComprobanteCaja", query = "SELECT d FROM DetalleComprobanteCajaAsiento d WHERE d.detalleComprobanteCajaAsientoPK.idComprobanteCaja = :idComprobanteCaja"),
    @NamedQuery(name = "DetalleComprobanteCajaAsiento.findByCorrelativo", query = "SELECT d FROM DetalleComprobanteCajaAsiento d WHERE d.detalleComprobanteCajaAsientoPK.correlativo = :correlativo"),
    @NamedQuery(name = "DetalleComprobanteCajaAsiento.findByCorrelAsiento", query = "SELECT d FROM DetalleComprobanteCajaAsiento d WHERE d.detalleComprobanteCajaAsientoPK.correlAsiento = :correlAsiento"),
    @NamedQuery(name = "DetalleComprobanteCajaAsiento.findByMontoDebe", query = "SELECT d FROM DetalleComprobanteCajaAsiento d WHERE d.montoDebe = :montoDebe"),
    @NamedQuery(name = "DetalleComprobanteCajaAsiento.findByMontoHaber", query = "SELECT d FROM DetalleComprobanteCajaAsiento d WHERE d.montoHaber = :montoHaber")})
public class DetalleComprobanteCajaAsiento implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected DetalleComprobanteCajaAsientoPK detalleComprobanteCajaAsientoPK;
    @Column(name = "monto_debe")
    private BigDecimal montoDebe;
    @Column(name = "monto_haber")
    private BigDecimal montoHaber;
    @JoinColumn(name = "id_cuenta_contable", referencedColumnName = "id_cuenta_contable")
    @ManyToOne(optional = false)
    private CuentaContable idCuentaContable;

    @Column(name = "conciliado")
    private boolean conciliado;

    @Column(name = "nro_documento")
    private String nroDocumento;

    @Column(name = "Cod_CentroCosto")
    private String codCentroCosto;

   @Column(name = "id_cod_presupuestal")
    private String idCodPresupuestal;


    @JoinColumns({
        @JoinColumn(name = "id_comprobante_caja", referencedColumnName = "id_comprobante_caja", insertable = false, updatable = false,nullable=true),
        @JoinColumn(name = "correlativo", referencedColumnName = "correlativo", insertable = false, updatable = false,nullable=true)})
    @ManyToOne(optional = false)
    private DetalleComprobanteCaja detalleComprobanteCaja;

    public DetalleComprobanteCajaAsiento() {
    }

    public DetalleComprobanteCajaAsiento(DetalleComprobanteCajaAsientoPK detalleComprobanteCajaAsientoPK) {
        this.detalleComprobanteCajaAsientoPK = detalleComprobanteCajaAsientoPK;
    }

    public DetalleComprobanteCajaAsiento(String idComprobanteCaja, int correlativo, int correlAsiento) {
        this.detalleComprobanteCajaAsientoPK = new DetalleComprobanteCajaAsientoPK(idComprobanteCaja, correlativo, correlAsiento);
    }

    public String getCodCentroCosto() {
        return codCentroCosto;
    }

    public void setCodCentroCosto(String codCentroCosto) {
        this.codCentroCosto = codCentroCosto;
    }

    public String getIdCodPresupuestal() {
        return idCodPresupuestal;
    }

    public void setIdCodPresupuestal(String idCodPresupuestal) {
        this.idCodPresupuestal = idCodPresupuestal;
    }

    public DetalleComprobanteCajaAsientoPK getDetalleComprobanteCajaAsientoPK() {
        return detalleComprobanteCajaAsientoPK;
    }

    public void setDetalleComprobanteCajaAsientoPK(DetalleComprobanteCajaAsientoPK detalleComprobanteCajaAsientoPK) {
        this.detalleComprobanteCajaAsientoPK = detalleComprobanteCajaAsientoPK;
    }

    public String getNroDocumento() {
        return nroDocumento;
    }

    public void setNroDocumento(String nroDocumento) {
        this.nroDocumento = nroDocumento;
    }

    public boolean isConciliado() {
        return conciliado;
    }

    public void setConciliado(boolean conciliado) {
        this.conciliado = conciliado;
    }

    public BigDecimal getMontoDebe() {
        return montoDebe;
    }

    public void setMontoDebe(BigDecimal montoDebe) {
        this.montoDebe = montoDebe;
    }

    public BigDecimal getMontoHaber() {
        return montoHaber;
    }

    public void setMontoHaber(BigDecimal montoHaber) {
        this.montoHaber = montoHaber;
    }

    public CuentaContable getIdCuentaContable() {
        return idCuentaContable;
    }

    public void setIdCuentaContable(CuentaContable idCuentaContable) {
        this.idCuentaContable = idCuentaContable;
    }

    public DetalleComprobanteCaja getDetalleComprobanteCaja() {
        return detalleComprobanteCaja;
    }

    public void setDetalleComprobanteCaja(DetalleComprobanteCaja detalleComprobanteCaja) {
        this.detalleComprobanteCaja = detalleComprobanteCaja;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (detalleComprobanteCajaAsientoPK != null ? detalleComprobanteCajaAsientoPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof DetalleComprobanteCajaAsiento)) {
            return false;
        }
        DetalleComprobanteCajaAsiento other = (DetalleComprobanteCajaAsiento) object;
        if ((this.detalleComprobanteCajaAsientoPK == null && other.detalleComprobanteCajaAsientoPK != null) || (this.detalleComprobanteCajaAsientoPK != null && !this.detalleComprobanteCajaAsientoPK.equals(other.detalleComprobanteCajaAsientoPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "tesoreria.ejb30.entity.DetalleComprobanteCajaAsiento[detalleComprobanteCajaAsientoPK=" + detalleComprobanteCajaAsientoPK + "]";
    }

}
